<?php 

// Подключаем библиотеки
require_once('lib.php');

// содключаем библиотеку форм
$DOF->modlib('widgets')->webform();

//global $CFG;
//require_once("$CFG->libdir/formslib.php");

//*******************************************************************************************
// Форма администраторской панели на странице администратирования (section=admin)
//*******************************************************************************************
class dof_im_guestbook_moderpanel_form extends dof_modlib_widgets_form {

    // --------------------------------PROPERTIES-------------------------------------
    protected $dof;


    // ---------------------------------METHODS-------------------------------------
    public function definition() {

        global $CFG, $DOF;

        $mform =& $this->_form;

        // -----------------------Данные для селектора сообщений----------------------------
        $arrSelect['TEXT'] = array("no selection");
        $messages = array(0 => 'no selection');
        $comments = array(0 => 'no selection');


        if (!empty($this->_customdata['MSG_LIST']))
        {
            foreach ($this->_customdata['MSG_LIST'] as $key => $value)
            {
                $messages[$value['id']] = "#".$value['id'].": ".$value['title'];
            }
        }
 
        // ---------------------------Создание формы-------------------------------
        $mform->addElement('html', '<h3>Admin panel</h3>');
        $mform->addElement('html', '<h4>select message:</h4>');

        $mform->addElement('select', 'mlist', '', $messages);

        $mform->addElement('submit', 'gettxt', 'get text');

        $mform->addElement('html', '<h4>Message text:</h4>');
         
        $mform->addElement('textarea', 'mtext', '', array('rows' => '12', 'cols' => '32', 'wrap' => 'virtual'));
        
        $submitarray = array();
        $submitarray[] =& $mform->createElement('submit', 'aplmsg', 'apply');
        $submitarray[] =& $mform->createElement('submit', 'delmsg', 'delete');
        $mform->addGroup($submitarray, 'subbuttons', '', array(''), false);

        $mform->addElement('html', '<h5>select comment:</h5>');
        $mform->addElement('select', 'comlist', '', $comments);

        $mform->addElement('submit', 'delcom', 'delete');

        $homelink = $DOF->url_im('guestbook', '/index.php', array());
        $mform->addElement('html', '<a id="home" href="'.$homelink.'">go home</a>');
         
        // -----------------------------------------------------------------------
    }
    
    // заполняем textarea и select с комментариями после инициализации формы
    public function definition_after_data() {
        
        global $DOF;

        $mform = &$this->_form;
        $msgid = $mform->getElementValue('mlist');
        $text = '';
        
        if (intval($msgid[0]) > 0)
        {
            $arrMsg = array();
            $arrMsg = $DOF->storage('guestbook')->get_message_by_id($msgid[0]);
            $text = $arrMsg[0]['text'];
            $mform->setConstant('mtext', $text);
            
            // записываем комментарии в селекt
            $comments = array();
            $select = $mform->getElement('comlist');
            if (!empty($arrMsg['COMMENTS']))
            {
                foreach ($arrMsg['COMMENTS'] as $key => $value)
                {
                    $comments[$value['id']] = "#".$value['id'].": ".$value['text'];
                }
                
                foreach ($comments as $key => $value)
                {
                    $select->addOption($value, $key);
                }   
            }
        }
        
    }
    
    // Проверка правильности введенных данных
    public function validation($data, $files) {

        return array();
    }
    
    // обработка введенных данных
    public function process() {
        
        $data = (array)$this->get_data();
        
        if (isset($data['aplmsg']))
        {
            if ( isset($data['mlist']) AND (intval($data['mlist']) > 0) 
                    AND (!empty($data['mtext'])) )
            {
                return true;
            }
            
            return false;    
        }
        else if (isset($data['delmsg']))
        {
            if ( isset($data['mlist']) AND (intval($data['mlist']) > 0) )
            {
                return true;
            }
            
            return false;
        } 
        else if (isset($data['delcom']))
        {
            if ( isset($data['mlist']) AND (intval($data['mlist']) > 0) 
                    AND isset($data['comlist']) AND (intval($data['comlist']) > 0) )
            {
                return true;
            }
            
            return false;
        }
        else if (isset($data['gettxt']))
        {
            if ( isset($data['mlist']) AND (intval($data['mlist']) > 0) )
            {
                return true;
            }
            
            return false;
        }
        
        return false;
    }
     
}

//*******************************************************************************************
// Форма добавления комментария на странице просмотра отдельного сообщения (section=msg)
//*******************************************************************************************
class dof_im_guestbook_addcom_form extends dof_modlib_widgets_form {

    // --------------------------------PROPERTIES-------------------------------------
    protected $dof;
    
    // ---------------------------------METHODS-------------------------------------
    function definition() {

        global $CFG;

        $mform =& $this->_form;

        // -----------------------------Создаем форму----------------------------------

        $mform->addElement('html', '<br/><h3>Add comment</h3><br/>');

        $mform->addElement('text', 'cmtauthor', '<h4>Name:</h4>', array('size' => '14', 'maxlength' => '64'));

        $mform->addElement('html', '<br/><h4>Message text</h4>');
        $mform->addElement('textarea', 'cmttext', '', array('cols' => '40', 'rows' => '16', 'virtal' => 'wrap'));

        $submitarray = array();
        $submitarray[] =& $mform->createElement('submit', 'addcom', 'add');
        $submitarray[] =& $mform->createElement('reset', 'reset', 'reset');
        $mform->addGroup($submitarray, 'subbuttons', '', array(''), false);

        // ---------------------------------------------------------------------
    }

    // Проверка правильности введенных данных
    function validation($data, $files) {

        return array();
    }
    
    // обработка введенных данных
    public function process() {
        
        $data = (array)$this->get_data();
        $data['id'] = optional_param('id', null, PARAM_TEXT); 
        
        // если введены не пустые поля автора и текста, также корректный айдишник
        if ( !empty($data['cmtauthor']) AND !empty($data['cmttext']) AND (intval($data['id']) > 0) )
        {
            return true;
        }
        
        return false;
    }

}

//*******************************************************************************************
// Форма создания нового сообщения на главной странице (section=main)
//*******************************************************************************************
class dof_im_guestbook_newmsg_form extends dof_modlib_widgets_form {

    // --------------------------------PROPERTIES-------------------------------------
    protected $dof;

    // ----------------------------------METHODS-------------------------------------
    function definition() {

        global $CFG, $DOF;

        $mform =& $this->_form; // Don't forget the underscore!

        // Собираем данные из массива $arrResult ($this->_customdata) для заполнения селектов
        $arrSelect = array(0 => 'new message');
         
        if (!empty($this->_customdata))
        {
            foreach ($this->_customdata as $key => $value)
            {
                $arrSelect[$value['id']] = "#".$value['id'].": ".$value['title'];
            }
        }
        // -----------------------------Создаем форму----------------------------------

        $mform->addElement('html', '<h3>Add message:</h3>');

        $mform->addElement('html', '<h5>Response or new:</h5>');
        $mform->addElement('select', 'msglist', '', $arrSelect);

        $mform->addElement('text', 'login', '<h4>Name:</h4>', array('size' => '14', 'maxlength' => '64'));
        $mform->addElement('html', '</p>');

        $mform->addElement('text', 'msgtitle', '<h5>Title:</h5>', array('size' => '24', 'maxlength' => '256'));

        $mform->addElement('html', '<h5>Message Text</h5>');
        $mform->addElement('textarea', 'msgtext', '', array('wrap' => 'virtual', 'cols' => '30', 'rows' => '12'));

        $submitarray = array();
        $submitarray[] =& $mform->createElement('submit', 'send', 'send');
        $submitarray[] =& $mform->createElement('reset', 'reset', 'reset');
        $mform->addGroup($submitarray, 'subbuttons', '', array(''), false);

        $moderlink = $DOF->url_im('guestbook', '/index.php', array('section' => 'admin'));
        $mform->addElement('html', '<div id="apanel">
                <h4>Admin panel:</h4>
                <p><a href="'.$moderlink.'">Come in</a></p>
                </div>');

        // ---------------------------------------------------------------------
    }

    // Проверка правильности введенных данных
    function validation($data, $files) {

        return array();
    }
    
    // обработка введенных данных
    public function process() {
        
        // массив возможных параметов формы
        /*
        $data = array('send' => optional_param('send',  null, PARAM_TEXT),
                'login' => optional_param('login',        null, PARAM_TEXT),
                'msgtext' => optional_param('msgtext',    null, PARAM_TEXT),
                'msglist' => optional_param('msglist',    null, PARAM_TEXT),
                'msgtitle' => optional_param('msgtitle',  null, PARAM_TEXT)
        );
        */
        
        $data = (array)$this->get_data();
        
        // прим: если msglist == 0 значит, что новое сообщение не ответ на чей-либо пост
        if (!empty($data['login']) AND !empty($data['msgtext']) AND !empty($data['msgtitle'])
                AND (intval($data['msglist']) >= 0) )
        {
            return true;
        }
        return false;
    }
    
}

?>